package com.sicocre.actions;

import java.io.Serializable;
import java.util.ArrayList;

import javax.annotation.PostConstruct;
import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;

import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component;

import com.sicocre.beans.Apertura;
import com.sicocre.beans.Banco;
import com.sicocre.beans.Cliente;
import com.sicocre.beans.EmpleadoBean;
import com.sicocre.beans.EstadoSolicitud;
import com.sicocre.beans.Pagos;
import com.sicocre.business.service.IAperturaService;
import com.sicocre.business.service.IComboService;
import com.sicocre.business.service.IPagoService;
import com.sicocre.utils.Constantes;


@Component
@Scope("request")
public class AperturaAction implements Serializable {

	private static final Logger log = Logger.getLogger(AperturaAction.class);
	
	/**
	 * 
	 */
	private static final long serialVersionUID = 1907680351674391595L;

	@Autowired
	private IAperturaService aperturaService;
	@Autowired
	private IPagoService pagoService;
	@Autowired
	private IComboService comboService;
	
	
	private Apertura apertura;
	private Pagos pagos;
	private Banco banco;
	private ArrayList<Banco> listBanco;
	private ArrayList<EmpleadoBean> listEmpleado;
	private ArrayList<Cliente> listCliente;
	private ArrayList<Apertura> listApertura;
	private Cliente cliente;
	private Pagos onlyPagos;
	private int idApe=0;
	static int idApertura=0;
	String folio ="";
	
	String nn="";
	int cveCli=0;
	int cApe=0;
	int cCre=0;	
	boolean faltaEmpleado=false;
	boolean configuardar=false;
	boolean contratoAsig=false;
	
	
	
	public AperturaAction(){	
		this.apertura = new Apertura();
		this.pagos= new Pagos();
		this.banco = new Banco();
		this.cliente=new Cliente();
		this.onlyPagos = new Pagos();
	}
		
	@PostConstruct
	public void initForm(){
		this.apertura = new Apertura();
		this.pagos =  new Pagos();
		this.banco = new Banco();
		this.onlyPagos = new Pagos();
		listBanco = comboService.consultaBancos(0);
		listEmpleado = comboService.consultaEmpleado();
		listCliente = comboService.consultaCliente();
						
	}
	
	public void buscaApertura(){
		System.out.println("Entro Dinamico....." + cveCli);
		if (cveCli != 0){ 			
		Apertura cliente = aperturaService.consultaApertura(cveCli);
		listApertura = comboService.conNumAperturas(cveCli);
		cApe = aperturaService.cantApe(cveCli);
		cCre = aperturaService.cantCre(cveCli);
		nn= cliente.getCliente().getNombre() + " " + cliente.getCliente().getaPaterno() + " " + cliente.getCliente().getaMaterno();
		
		}else{
		nn="";
		cveCli=0;
		cApe=0;
		cCre=0;
		
		}
		}
	
	
	public void guardar(){
		log.info("Comenzando a guardar...  ");
		System.out.println("clave del cliente desde guardar...." + cveCli);
	if (cveCli != 0){
		cliente.setClave(cveCli);
		apertura.setCliente(cliente);
		EstadoSolicitud estadoIni = new EstadoSolicitud();
		estadoIni.setIdStatus(1);
		apertura.setStatus(estadoIni);
		
	if(apertura.getEmpleado().getCveEmpleado() == 0){
		faltaEmpleado=true;
	}else{
		
	
		if(aperturaService.insertApertura(apertura)){			
			FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_INFO, Constantes.MSG_SUCCESS, Constantes.MSG_SUCCESS);
            FacesContext.getCurrentInstance().addMessage(null, message);
            
            folio = aperturaService.contrato();
            contratoAsig=true;
            
            
           //limpiar();
		}else{
			FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_INFO, Constantes.MSG_ERROR, Constantes.MSG_ERROR);
            FacesContext.getCurrentInstance().addMessage(null, message);
		}
	}
	}
	}
	
	
	
	public void guardarPago(){
		log.info("Comenzando a guardar...  ");
		System.out.println("clave del cliente dsd guardarPagoss...." + cveCli);
		System.out.println("id apertura.. " + idApertura);
		
		//pagoService.insertPagos(onlyPagos, 1);
		System.out.println("nada");
	}
	
	public void pru(){
		System.out.println("id apertura.. " + idApe);
		idApertura= idApe;
	}
	
	
	public void cerrarPop(){
		faltaEmpleado = false;
		configuardar =false;
		contratoAsig=false;
	}
	
	public void seguridad(){
		configuardar = true;
	}

	
    public String limpiar(){
		
		return "/pages/xhtml/creditoView.xhtml?faces-redirect=true";
	}
	
	

	public IAperturaService getAperturaService() {
		return aperturaService;
	}


	public void setAperturaService(IAperturaService aperturaService) {
		this.aperturaService = aperturaService;
	}


	public Apertura getApertura() {
		return apertura;
	}


	public void setApertura(Apertura apertura) {
		this.apertura = apertura;
	}


	public Pagos getPagos() {
		return pagos;
	}


	public void setPagos(Pagos pagos) {
		this.pagos = pagos;
	}


	public Banco getBanco() {
		return banco;
	}


	public void setBanco(Banco banco) {
		this.banco = banco;
	}


	public IComboService getComboService() {
		return comboService;
	}


	public void setComboService(IComboService comboService) {
		this.comboService = comboService;
	}

	public ArrayList<Banco> getListBanco() {
		return listBanco;
	}

	public void setListBanco(ArrayList<Banco> listBanco) {
		this.listBanco = listBanco;
	}

	public ArrayList<EmpleadoBean> getListEmpleado() {
		return listEmpleado;
	}

	public void setListEmpleado(ArrayList<EmpleadoBean> listEmpleado) {
		this.listEmpleado = listEmpleado;
	}


	public ArrayList<Cliente> getListCliente() {
		return listCliente;
	}


	public void setListCliente(ArrayList<Cliente> listCliente) {
		this.listCliente = listCliente;
	}

	public String getNn() {
		return nn;
	}

	public void setNn(String nn) {
		this.nn = nn;
	}

	
	public int getCveCli() {
		return cveCli;
	}

	public void setCveCli(int cveCli) {
		this.cveCli = cveCli;
	}

	public Cliente getCliente() {
		return cliente;
	}

	public void setCliente(Cliente cliente) {
		this.cliente = cliente;
	}

	public int getcApe() {
		return cApe;
	}

	public void setcApe(int cApe) {
		this.cApe = cApe;
	}

	public int getcCre() {
		return cCre;
	}

	public void setcCre(int cCre) {
		this.cCre = cCre;
	}

	public boolean isFaltaEmpleado() {
		return faltaEmpleado;
	}

	public void setFaltaEmpleado(boolean faltaEmpleado) {
		this.faltaEmpleado = faltaEmpleado;
	}

	public boolean isConfiguardar() {
		return configuardar;
	}

	public void setConfiguardar(boolean configuardar) {
		this.configuardar = configuardar;
	}

	public Pagos getOnlyPagos() {
		return onlyPagos;
	}

	public void setOnlyPagos(Pagos onlyPagos) {
		this.onlyPagos = onlyPagos;
	}

	public IPagoService getPagoService() {
		return pagoService;
	}

	public void setPagoService(IPagoService pagoService) {
		this.pagoService = pagoService;
	}

	public ArrayList<Apertura> getListApertura() {
		return listApertura;
	}

	public void setListApertura(ArrayList<Apertura> listApertura) {
		this.listApertura = listApertura;
	}

	public int getIdApe() {
		return idApe;
	}

	public void setIdApe(int idApe) {
		this.idApe = idApe;
	}

	public static int getIdApertura() {
		return idApertura;
	}

	public static void setIdApertura(int idApertura) {
		AperturaAction.idApertura = idApertura;
	}

	public String getFolio() {
		return folio;
	}

	public void setFolio(String folio) {
		this.folio = folio;
	}

	public boolean isContratoAsig() {
		return contratoAsig;
	}

	public void setContratoAsig(boolean contratoAsig) {
		this.contratoAsig = contratoAsig;
	}

	
}
